<?php
class KM_Producto_Modelo
{
    public $accesoBD;
    
    public function __construct(AccesoBD $accesoBD)
    {
    	$this->accesoBD = $accesoBD;
    }
    
    public function sube (KM_Producto_Contenido $contenido)
    {
        $sql = "SELECT ". KM_Producto_Contenido::CLAVE_PRIMARIA .",posicion FROM ". KM_Producto_Contenido::TABLA;
        $sql.= " WHERE posicion > ". $contenido->getPropiedad("posicion") ." ORDER BY posicion ASC LIMIT 1";
        
        $resultado = $this->accesoBD->queryBDObjeto ($sql);
         
        if ($resultado instanceof ObjetoResultadoAccesoBD)
        {
            $otroRegistro = new KM_Producto_Contenido($this->accesoBD, $resultado->getValor(KM_Producto_Contenido::CLAVE_PRIMARIA));
            $otroRegistro->setPropiedad ("posicion", $contenido->getPropiedad("posicion"));
            $otroRegistro->consolida();

            $contenido->setPropiedad("posicion", $resultado->getValor("posicion"));
            $contenido->consolida();
        }
    }

    public function baja (KM_Producto_Contenido $contenido)
    {
        $sql = "SELECT ". KM_Producto_Contenido::CLAVE_PRIMARIA .",posicion FROM ". KM_Producto_Contenido::TABLA;
        $sql.= " WHERE posicion < ". $contenido->getPropiedad("posicion") ." ORDER BY posicion DESC LIMIT 1";
         
        $resultado = $this->accesoBD->queryBDObjeto ($sql);

        if ($resultado instanceof ObjetoResultadoAccesoBD)
        {
            $otroRegistro = new KM_Producto_Contenido($this->accesoBD, $resultado->getValor(KM_Producto_Contenido::CLAVE_PRIMARIA));
            $otroRegistro->setPropiedad ("posicion", $contenido->getPropiedad("posicion"));
            $otroRegistro->consolida();

            $contenido->setPropiedad("posicion", $resultado->getValor("posicion"));
            $contenido->consolida();
        }
    }
    
    public function generaPosicion()
    {
    	$retorno    = 1;
        $sql        = "SELECT posicion FROM ". KM_Producto_Contenido::TABLA ." WHERE 1 ORDER BY posicion DESC LIMIT 1";
        $resultado  = $this->accesoBD->queryBDCampo ($sql);
        
        if ($resultado >= $retorno)
        {
        	$retorno = ($resultado + 1);
        }
        
        return $retorno;
    }
}
?>